#include "smallsh.h"

void procline()
{
    char* arg[MAXARG+1];
    int toktype;
    int narg;
    int type;

    for(narg=0;;) {
        switch ((toktype = gettok(arg[narg])))
        {
        case ARG:
            if(narg<MAXARG) // 不超过最大参数值
                narg++;    
            break;
        
        case EOL:
        
        case SEMICOLON:

        case AMPERSAND: // ‘&’代表以后台的方式运行该命令
            type = (toktype == AMPERSAND)? BACKGROUND:FOREGROUND; // 在前端以阻塞式的方式执行该命令，或者，在后台执行该命令
            if (narg!=0) // 参数的数量不为0
            {
                arg[narg] = (char*)NULL; // execvp函数的第一个参数是以NULL结尾的strings数组
                runcommand(arg,type);
            }
            if(toktype == EOL) return;
            narg = 0;
            break;
        }
    }
}